Aller au contenu principal

Sélectionner et transformer des Series

Sélection sans ambiguïté

import pandas as pd

s = pd.Series([90, 80, 70], index=["Ada", "Lin", "Sam"], dtype="float64")
s.loc["Ada"] # une étiquette
s.loc[["Ada", "Sam"]] # plusieurs étiquettes
s.iloc[0] # première position
s.iloc[:3] # trois premières positions
s[s.ge(80)] # filtre booléen

Utilisez .loc pour les étiquettes et .iloc pour les positions, surtout lorsque l'index contient lui-même des entiers. s[key] reste concis pour une étiquette sans ambiguïté, mais les indexeurs explicites expriment mieux l'intention et résistent aux changements d'index.

Ordre de choix des transformations

  1. Utilisez l'arithmétique vectorisée native ou les accesseurs de chaînes et de dates.
  2. Utilisez map pour une recherche scalaire ou une fonction élément par élément.
  3. Utilisez where, mask, replace ou fillna pour un remplacement conditionnel.
  4. N'utilisez apply qu'en l'absence d'une opération vectorisée plus claire.
normalized = (s - s.mean()) / s.std()
bands = s.map({90: "A", 80: "B"})
clipped = s.clip(lower=0)

Un dictionnaire transmis à map transforme les valeurs sans correspondance en valeurs manquantes. Utilisez replace si elles doivent rester inchangées.

Combiner des Series

Utilisez pd.concat pour empiler les objets ou les placer côte à côte :

train, test = s.iloc[:2], s.iloc[2:]
actual, predicted = s, s + 5
stacked = pd.concat([train, test], ignore_index=True)
table = pd.concat([actual.rename("actual"), predicted.rename("predicted")], axis=1)

Series.append n'est pas l'API de combinaison. Avant une concaténation par colonnes, vérifiez si l'alignement par étiquette est bien voulu.

Itération

Si elle est réellement nécessaire, s.items() produit des paires (étiquette, valeur). N'itérez pas pour l'arithmétique ou les filtres courants : les expressions vectorisées sont plus claires et souvent plus rapides.

Résultats et hypothèses statistiques

Pour ces données, s.loc["Ada"] renvoie le scalaire 90.0, deux étiquettes donnent une Series de longueur 2 et le filtre garde Ada et Lin. Les transformations renvoient de nouvelles Series sans modifier s. bands contient "A", "B", puis une valeur manquante : il s’agit d’une correspondance exacte, pas d’intervalles de notes.

Series.std utilise le dénominateur d’échantillon (ddof=1) : moyenne 80, écart-type 10 et normalized égal à [1.0, 0.0, -1.0]. Utilisez ddof=0 pour l’écart-type de population. Une série constante a un écart-type nul ; moins de deux valeurs valides ne définissent pas l’écart-type d’échantillon. Prévoyez ces cas avant la division.

Sources

Explorer les liensOuvrir le réseau